Add declarative validation for Fabric network config files #595
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Signed-off-by: Attila Klenik [email protected]
Resolves part of issue #467
(Also moves the config runtime key names, so the Config.js module can use them without a circular dep issue.)
Design of the fix
The validation part of the
fabricNetwork.js
module was extracted intoconfigValidator.js
, which uses the joi package to define and validate object schemas declaratively. This makes it easy to adapt the validation rule for future/changed schemas.Validation of the fix
Unit tests cover the entire schema, property-by-property (since the schema is declarative, code coverage is not representative). The expected error/joi messages are checked to ensure that the test targets the intended property error (and isn't masked by an other error).
Automated Tests
What documentation has been provided for this pull request
Even though this is just an under-the-hood change, the Fabric adapter docs is also updated to make it more readable and consistent with the validation rules. Live preview: https://aklenik.github.io/caliper/vNext/fabric-config/